<?php

namespace app\common\model;

/**
 * 用户
 * Class User
 * @package app\common\model
 */
class User extends Base
{

    protected $table = 'user';

    protected $createTime = 'reg_time';
    protected $updateTime = '';

    /**
     * 自动写入
     * @var array
     */
    protected $insert = array(
        'status' => 1,
        'reg_time',
        'user_pass'
    );

    protected $type = array(
        'id' => 'integer',
//        'reg_time' => 'integer'
    );

    /**
     * 状态
     * @var array
     */
    public $status = [
        1 => '正常',
        2 => '禁用'
    ];

    /**
     * 注册来源
     * @var array
     */
    public $reg_way = [
        1 => 'PC',
        2 => 'WX',
        3 => 'APK',
        4 => 'IOS'
    ];


    public $editfield = array(

        array('name' => 'id', 'type' => 'hidden'),

        array('name' => 'phone', 'title' => '手机号', 'type' => 'readonly', 'help' => ''),
        array('name' => 'user_name', 'title' => '昵称', 'type' => 'readonly', 'help' => ''),
//        array('name' => 'email', 'title' => '邮箱', 'type' => 'readonly', 'help' => '用户邮箱，用于找回密码等安全操作'),

        array('name' => 'user_pass', 'title' => '密码', 'type' => 'password', 'help' => '为空时则不修改,格式：字母+数字8位以上'),
//        array('name' => 'pay_pass', 'title' => '支付密码', 'type' => 'password', 'help' => '为空时则不修改'),

//        array('name' => 'sex', 'title' => '性别', 'type' => 'select', 'option' => array('0' => '保密', '1' => '男', '2' => '女'), 'help' => ''),
//        array('name' => 'qq', 'title' => 'QQ', 'type' => 'text', 'help' => ''),
//        array('name' => 'score', 'title' => '用户积分', 'type' => 'text', 'help' => ''),
//        array('name' => 'signature', 'title' => '用户签名', 'type' => 'textarea', 'help' => ''),

        array('name' => 'status', 'title' => '状态', 'type' => 'select', 'option' => [], 'help' => '状态:标识用户是否锁定'),
    );

    public function initialize()
    {
        parent::initialize();
        foreach ($this->editfield as $key => $value) {
            if ($value['name'] == 'status') {
                $value['option'] = $this->status;
            }
            $this->editfield[$key] = $value;
        }
    }

    public function getStatusNameAttr($key, $value)
    {
        return isset($this->status[$value['status']]) ? $this->status[$value['status']] : '';
    }

    public function getRegWayNameAttr($key, $value)
    {
        return isset($this->reg_way[$value['reg_way']]) ? $this->reg_way[$value['reg_way']] : '';
    }


//    public $addfield = array(
//        array('name' => 'username', 'title' => '用户名', 'type' => 'text', 'help' => '用户名会作为默认的昵称'),
//        array('name' => 'password', 'title' => '密码', 'type' => 'password', 'help' => '用户密码不能少于6位'),
//        array('name' => 'repassword', 'title' => '确认密码', 'type' => 'password', 'help' => '确认密码'),
//        array('name' => 'email', 'title' => '邮箱', 'type' => 'text', 'help' => '用户邮箱，用于找回密码等安全操作'),
//    );

//    public $useredit = array(
//        array('name' => 'uid', 'type' => 'hidden'),
//        array('name' => 'nickname', 'title' => '昵称', 'type' => 'text', 'help' => ''),
//        array('name' => 'sex', 'title' => '性别', 'type' => 'select', 'option' => array('0' => '保密', '1' => '男', '2' => '女'), 'help' => ''),
//        array('name' => 'email', 'title' => '邮箱', 'type' => 'text', 'help' => '用户邮箱，用于找回密码等安全操作'),
//        array('name' => 'mobile', 'title' => '联系电话', 'type' => 'text', 'help' => ''),
//        array('name' => 'qq', 'title' => 'QQ', 'type' => 'text', 'help' => ''),
//        array('name' => 'signature', 'title' => '用户签名', 'type' => 'textarea', 'help' => ''),
//    );

//    public $userextend = array(
//        array('name' => 'company', 'title' => '单位名称', 'type' => 'text', 'help' => ''),
//        array('name' => 'company_addr', 'title' => '单位地址', 'type' => 'text', 'help' => ''),
//        array('name' => 'company_contact', 'title' => '单位联系人', 'type' => 'text', 'help' => ''),
//        array('name' => 'company_zip', 'title' => '单位邮编', 'type' => 'text', 'help' => ''),
//        array('name' => 'company_depart', 'title' => '所属部门', 'type' => 'text', 'help' => ''),
//        array('name' => 'company_post', 'title' => '所属职务', 'type' => 'text', 'help' => ''),
//        array('name' => 'company_type', 'title' => '单位类型', 'type' => 'select', 'option' => '', 'help' => ''),
//    );

    protected function setStatusAttr($value)
    {
        return 1;
    }

    protected function setUserPassAttr($value, $data)
    {
        return password_hash($value, 1);
    }

    public function money()
    {
        return $this->hasOne('Money', 'uid', 'id')
            ->field('money_collect,money_freeze,account_money');
    }

//    protected function getGroupListAttr($value, $data)
//    {
//        $sql = db('AuthGroupAccess')->where('uid', $data['uid'])->fetchSql(true)->column('group_id');
//        return db('AuthGroup')->where('id in (' . $sql . ')')->column('title', 'id');
//    }


//    public function getInfo($uid)
//    {
//        $data = $this->where(array('uid' => $uid))->find();
//        return $data;
//    }

    /**
     * 修改用户资料
     */
    public function editUser($data)
    {
        if ($data['id']) {
            $update = ['status' => intval($data['status'])];
            $update['user_pass'] = \app\common\serve\User::encryptUserPass($data['user_pass']);
            return $this->where(['id' => $data['id']])->update($update);
        } else {
            $this->error = "非法操作！";
            return false;
        }
    }

//    public function editpw($data, $is_reset = false)
//    {
//        $uid = $is_reset ? $data['uid'] : session('user_auth.uid');
//        if (!$is_reset) {
//            //后台修改用户时可修改用户密码时设置为true
//            $this->checkPassword($uid, $data['oldpassword']);
//
//            $validate = $this->validate('member.password');
//            if (false === $validate) {
//                return false;
//            }
//        }
//
//        $data['salt'] = rand_string(6);
//
//        return $this->save($data, array('uid' => $uid));
//    }

//    protected function checkPassword($uid, $password)
//    {
//        if (!$uid || !$password) {
//            $this->error = '原始用户UID和密码不能为空';
//            return false;
//        }
//
//        $user = $this->where(array('uid' => $uid))->find();
//        if (md5($password . $user['salt']) === $user['password']) {
//            return true;
//        } else {
//            $this->error = '原始密码错误！';
//            return false;
//        }
//    }

//    public function extend()
//    {
//        return $this->hasOne('MemberExtend', 'uid');
//    }
}